const logger = require('../utils/logger');

/**
 * 全局错误处理中间件
 * 
 * @param {Error} err - 错误对象
 * @param {Object} req - 请求对象
 * @param {Object} res - 响应对象
 * @param {Function} next - 下一个中间件函数
 */
function errorHandler(err, req, res, next) {
  // 记录错误
  logger.error(`${err.name}: ${err.message}`);
  if (err.stack) {
    logger.error(err.stack);
  }
  
  // 确定状态码
  const statusCode = err.statusCode || err.status || 500;
  
  // 准备错误响应
  const errorResponse = {
    error: {
      message: err.message || '服务器内部错误',
      code: err.code || 'INTERNAL_SERVER_ERROR'
    }
  };
  
  // 在开发环境中添加堆栈信息
  if (process.env.NODE_ENV !== 'production' && err.stack) {
    errorResponse.error.stack = err.stack;
  }
  
  // 发送错误响应
  res.status(statusCode).json(errorResponse);
}

module.exports = errorHandler;